There exist many computer programs today that assist a user in editing data on a computer. For example, a word processing program enables a user to enter and modify textual data. A computer-aided drafting program enables a user to enter and modify graphical data. A digital signal-editing program enables a user to load digital signal data, modify the digital signal data, and save the digital signal data. Such a digital signal may represent audio data, for example.
Sometimes, such programs provide an “undo” feature. The “undo” feature can be used to reverse the most recent change that was made to the data that is being edited. For example, three operations might be performed in a particular chronological order relative to data. Operation “X” might be performed first, operation “Y” might be performed next, and operation “Z” might be performed after that. Each operation might produce a different effect relative to the data.
After each of the operations has been performed, a user might decide that he did not want the last operation, operation “Z,” to be performed. To place the data back into the state in which the data was prior to the performance of operation “Z,” the user can activate the “undo” feature of the editing program. The program remembers the state of the data prior to the most recent operation, so, in response to the activation of the “undo” feature, the program can place the data back into the state in which the data was prior to the performance of operation “Z.”
Sometimes, the user might want to keep the most recently performed operation, but undo an operation that was performed previously to that. For example, the user might want to undo operation “Y” but not operation “Z.” Assuming that the program remembers the state of the data prior to operations less recent than the most recently performed operation, the user may activate the “undo” feature twice to undo the effects of both operation “Z” and operation “Y.” Unfortunately, then the user must invoke features of the program that he previously invoked to cause the program to repeat operation “Z” relative to the data.
This manual re-doing can be tedious. If many operations must be undone and re-done in this manner, then the user may have difficulty remembering which operations need to be re-done. In some cases, the precision required by the user in causing the operations to be performed originally makes an exact repetition of the operations extremely difficult.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.